package geraeteverwaltung;

import static java.awt.event.KeyEvent.VK_ENTER;
import java.util.Enumeration;
import java.util.ResourceBundle;
import javax.swing.AbstractButton;


/**
 * Das Benutzer Interface.
 * @author NetBeans + user
 */
public class UserInterface extends javax.swing.JFrame {

    // geraeteverwaltung.properties muss im CLASSPATH liegen
    ResourceBundle res = ResourceBundle.getBundle("geraeteverwaltung.geraeteverwaltung");
    
    private GeraeteManager geraetemanager;
    private BenutzerManager benutzermanager;
    
    private int geladeneBenutzerID = -9999;
    private int geladeneGeraeteID = -9999;
    
    private final int idBreite = Integer.valueOf(res.getString("anzeige.idbreite"));
    private final int spaltenbreite = Integer.valueOf(res.getString("anzeige.spaltenbreite"));
    private final String anleitungBenutzer = res.getString("anleitung.benutzer");
    private final String anleitungGeraete = res.getString("anleitung.geraete");

    
    /**
     * Creates new form UserInterface
     */
    public UserInterface() {
        initComponents();
    }

    public int getGeladeneBenutzerID ()
    {
        return geladeneBenutzerID;
    }
    public void setGeladeneBenutzerID (int geladeneBenutzerID)
    {
        this.geladeneBenutzerID = geladeneBenutzerID;
    }
    
    public int getGeladeneGeraeteID ()
    {
        return geladeneGeraeteID;
    }
    public void setGeladeneGeraeteID (int geladeneGeraeteID)
    {
        this.geladeneGeraeteID = geladeneGeraeteID;
    }

    /**
     * Liefert die Anleitung zur Benutzer bzw. Geraeteverwaltung.
     * @param typ
     * @return anleitung
     */
    public String getAnleitung (String typ)
    {
        if (typ.equals("Benutzer")) return anleitungBenutzer;
        else return anleitungGeraete;
    }


    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        buttonGroupGeraete = new javax.swing.ButtonGroup();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jPanel5 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTextArea2 = new javax.swing.JTextArea();
        jTextField1 = new javax.swing.JTextField();
        jLabel13 = new javax.swing.JLabel();
        jPasswordField1 = new javax.swing.JPasswordField();
        jLabel14 = new javax.swing.JLabel();
        jButton5 = new javax.swing.JButton();
        jButton6 = new javax.swing.JButton();
        jButton9 = new javax.swing.JButton();
        jButton10 = new javax.swing.JButton();
        jButton7 = new javax.swing.JButton();
        jButton8 = new javax.swing.JButton();
        jPanel6 = new javax.swing.JPanel();
        jLabel8 = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        jLabel10 = new javax.swing.JLabel();
        jLabel11 = new javax.swing.JLabel();
        jTextField7 = new javax.swing.JTextField();
        jTextField8 = new javax.swing.JTextField();
        jTextField9 = new javax.swing.JTextField();
        jTextField10 = new javax.swing.JTextField();
        jLabel12 = new javax.swing.JLabel();
        jComboBox2 = new javax.swing.JComboBox();
        jLabel15 = new javax.swing.JLabel();
        jTextField11 = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jTextField12 = new javax.swing.JTextField();
        jPanel2 = new javax.swing.JPanel();
        jPanel3 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jRadioButton5 = new javax.swing.JRadioButton();
        jRadioButton3 = new javax.swing.JRadioButton();
        jButton3 = new javax.swing.JButton();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jPanel4 = new javax.swing.JPanel();
        jTextField5 = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        jTextField4 = new javax.swing.JTextField();
        jTextField3 = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        jTextField2 = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jLabel7 = new javax.swing.JLabel();
        jTextField6 = new javax.swing.JTextField();
        jComboBox1 = new javax.swing.JComboBox();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenuItem2 = new javax.swing.JMenuItem();
        jSeparator1 = new javax.swing.JPopupMenu.Separator();
        jMenuItem3 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();
        jMenuItem4 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Geräteverwaltung V1.0");
        setResizable(false);

        jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Benutzer"));
        jPanel5.setPreferredSize(new java.awt.Dimension(412, 280));

        jTextArea2.setEditable(false);
        jTextArea2.setColumns(20);
        jTextArea2.setFont(new java.awt.Font("Courier New", 0, 12)); // NOI18N
        jTextArea2.setRows(5);
        jTextArea2.setNextFocusableComponent(jButton6);
        jScrollPane2.setViewportView(jTextArea2);

        jTextField1.setNextFocusableComponent(jPasswordField1);
        jTextField1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField1ActionPerformed(evt);
            }
        });

        jLabel13.setText("Kennwort:");

        jPasswordField1.setNextFocusableComponent(jButton5);

        jLabel14.setText("Benutzer:");

        jButton5.setText("Anmelden");
        jButton5.setNextFocusableComponent(jButton9);
        jButton5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton5ActionPerformed(evt);
            }
        });
        jButton5.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jButton5KeyPressed(evt);
            }
        });

        jButton6.setText("Benutzer anzeigen");
        jButton6.setNextFocusableComponent(jTextField1);
        jButton6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton6ActionPerformed(evt);
            }
        });
        jButton6.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                jButton6KeyPressed(evt);
            }
        });

        jButton9.setText("Bearbeiten");
        jButton9.setEnabled(false);
        jButton9.setNextFocusableComponent(jButton10);
        jButton9.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton9ActionPerformed(evt);
            }
        });

        jButton10.setText("Speichern");
        jButton10.setEnabled(false);
        jButton10.setNextFocusableComponent(jButton7);
        jButton10.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton10ActionPerformed(evt);
            }
        });

        jButton7.setText("Neu");
        jButton7.setEnabled(false);
        jButton7.setNextFocusableComponent(jButton8);
        jButton7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton7ActionPerformed(evt);
            }
        });

        jButton8.setText("Entfernen");
        jButton8.setEnabled(false);
        jButton8.setNextFocusableComponent(jTextField7);
        jButton8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton8ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane2)
                    .addGroup(jPanel5Layout.createSequentialGroup()
                        .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel14, javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jLabel13, javax.swing.GroupLayout.Alignment.TRAILING))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel5Layout.createSequentialGroup()
                                .addComponent(jPasswordField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(jButton5))
                            .addGroup(jPanel5Layout.createSequentialGroup()
                                .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(jButton6)))
                        .addGap(18, 18, 18)
                        .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel5Layout.createSequentialGroup()
                                .addComponent(jButton10)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jButton8))
                            .addGroup(jPanel5Layout.createSequentialGroup()
                                .addComponent(jButton9, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jButton7)))
                        .addGap(0, 0, Short.MAX_VALUE)))
                .addContainerGap())
        );

        jPanel5Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton10, jButton7, jButton8, jButton9});

        jPanel5Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jPasswordField1, jTextField1});

        jPanel5Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton5, jButton6});

        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jButton9)
                        .addComponent(jButton7))
                    .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel14)
                        .addComponent(jButton6)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jButton8)
                        .addComponent(jButton10))
                    .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel13)
                        .addComponent(jPasswordField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jButton5)))
                .addContainerGap(29, Short.MAX_VALUE))
        );

        jPanel5Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButton10, jButton7, jButton8, jButton9});

        jPanel5Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jPasswordField1, jTextField1});

        jPanel5Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButton5, jButton6});

        jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder("Benutzerdaten"));
        jPanel6.setPreferredSize(new java.awt.Dimension(322, 253));

        jLabel8.setText("Vorname:");

        jLabel9.setText("Nachname:");

        jLabel10.setText("Geburtsdatum:");

        jLabel11.setText("Rolle:");

        jTextField7.setEnabled(false);
        jTextField7.setPreferredSize(null);

        jTextField8.setEnabled(false);

        jTextField9.setEnabled(false);

        jTextField10.setEnabled(false);

        jLabel12.setText("ID:");

        jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Benutzer", "Admin" }));
        jComboBox2.setSelectedIndex(-1);
        jComboBox2.setEnabled(false);

        jLabel15.setText("Kennwort:");

        jTextField11.setEnabled(false);

        jLabel1.setText("Benutzername:");

        jTextField12.setEnabled(false);

        javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout.setHorizontalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel6Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel12)
                    .addComponent(jTextField7, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel8)
                    .addComponent(jTextField8, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(6, 6, 6)
                .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel9)
                    .addComponent(jTextField9, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel6Layout.createSequentialGroup()
                        .addGap(7, 7, 7)
                        .addComponent(jLabel10))
                    .addGroup(jPanel6Layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextField10, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jTextField12, javax.swing.GroupLayout.PREFERRED_SIZE, 122, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1))
                .addGap(6, 6, 6)
                .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jTextField11, javax.swing.GroupLayout.PREFERRED_SIZE, 59, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel15))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel11)
                    .addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(38, Short.MAX_VALUE))
        );

        jPanel6Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jComboBox2, jTextField10, jTextField11, jTextField12, jTextField8, jTextField9});

        jPanel6Layout.setVerticalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel6Layout.createSequentialGroup()
                            .addComponent(jLabel12)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(jTextField7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(jPanel6Layout.createSequentialGroup()
                            .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel8)
                                .addComponent(jLabel9))
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jTextField8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jTextField9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jTextField10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jTextField12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jTextField11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                    .addGroup(jPanel6Layout.createSequentialGroup()
                        .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel10)
                            .addComponent(jLabel1)
                            .addComponent(jLabel15)
                            .addComponent(jLabel11))
                        .addGap(26, 26, 26)))
                .addContainerGap(21, Short.MAX_VALUE))
        );

        jPanel6Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jComboBox2, jTextField10, jTextField11, jTextField12, jTextField7, jTextField8, jTextField9});

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, 889, Short.MAX_VALUE)
                    .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, 889, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, 286, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, 95, Short.MAX_VALUE)
                .addContainerGap())
        );

        jTabbedPane1.addTab("Benutzer", jPanel1);

        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Geräte"));

        jTextArea1.setEditable(false);
        jTextArea1.setColumns(20);
        jTextArea1.setFont(new java.awt.Font("Courier New", 0, 12)); // NOI18N
        jTextArea1.setRows(5);
        jScrollPane1.setViewportView(jTextArea1);

        buttonGroupGeraete.add(jRadioButton5);
        jRadioButton5.setText("Leihgeräte anzeigen");
        jRadioButton5.setEnabled(false);
        jRadioButton5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButton5ActionPerformed(evt);
            }
        });

        buttonGroupGeraete.add(jRadioButton3);
        jRadioButton3.setText("Alle Geräte anzeigen");
        jRadioButton3.setEnabled(false);
        jRadioButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jRadioButton3ActionPerformed(evt);
            }
        });

        jButton3.setText("Entfernen");
        jButton3.setEnabled(false);
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jButton1.setText("Neu");
        jButton1.setEnabled(false);
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("Speichern");
        jButton2.setEnabled(false);
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jButton4.setText("Bearbeiten");
        jButton4.setEnabled(false);
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1)
                    .addGroup(jPanel3Layout.createSequentialGroup()
                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addComponent(jRadioButton5, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jRadioButton3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGap(18, 18, 18)
                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jButton2)
                            .addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 126, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jButton3)
                            .addComponent(jButton1))
                        .addGap(0, 0, Short.MAX_VALUE)))
                .addContainerGap())
        );

        jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton1, jButton2, jButton3, jButton4});

        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jRadioButton3)
                    .addComponent(jButton4)
                    .addComponent(jButton1))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jRadioButton5)
                    .addComponent(jButton2)
                    .addComponent(jButton3))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanel3Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButton1, jButton2, jButton3, jButton4});

        jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder("Gerätedaten"));
        jPanel4.setPreferredSize(new java.awt.Dimension(315, 265));

        jTextField5.setFont(new java.awt.Font("Courier New", 0, 12)); // NOI18N
        jTextField5.setEnabled(false);

        jLabel4.setText("Bezeichnung:");

        jTextField4.setFont(new java.awt.Font("Courier New", 0, 12)); // NOI18N
        jTextField4.setEnabled(false);

        jTextField3.setFont(new java.awt.Font("Courier New", 0, 12)); // NOI18N
        jTextField3.setEnabled(false);

        jLabel3.setText("Standort:");

        jTextField2.setFont(new java.awt.Font("Courier New", 0, 12)); // NOI18N
        jTextField2.setEnabled(false);
        jTextField2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField2ActionPerformed(evt);
            }
        });

        jLabel2.setText("ID:");

        jLabel5.setText("Leihgerät:");

        jLabel6.setText("Entleiher:");

        jLabel7.setText("Entleihdatum:");

        jTextField6.setFont(new java.awt.Font("Courier New", 0, 12)); // NOI18N
        jTextField6.setEnabled(false);

        jComboBox1.setEditable(true);
        jComboBox1.setFont(new java.awt.Font("Courier New", 0, 12)); // NOI18N
        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Ja", "Nein" }));
        jComboBox1.setSelectedIndex(-1);
        jComboBox1.setEnabled(false);

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel2)
                    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel4)
                    .addComponent(jTextField3, javax.swing.GroupLayout.DEFAULT_SIZE, 148, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel3)
                    .addComponent(jTextField4, javax.swing.GroupLayout.DEFAULT_SIZE, 148, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel5)
                    .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 146, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 10, Short.MAX_VALUE)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel6)
                    .addComponent(jTextField5, javax.swing.GroupLayout.DEFAULT_SIZE, 148, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel7)
                    .addComponent(jTextField6, javax.swing.GroupLayout.DEFAULT_SIZE, 148, Short.MAX_VALUE))
                .addGap(58, 58, 58))
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel4Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addComponent(jLabel4)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addComponent(jLabel3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addComponent(jLabel5)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addComponent(jLabel6)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextField5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel4Layout.createSequentialGroup()
                        .addComponent(jLabel7)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextField6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(39, Short.MAX_VALUE))
        );

        jPanel4Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jComboBox1, jTextField2, jTextField3, jTextField4, jTextField5, jTextField6});

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, 889, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, 113, Short.MAX_VALUE)
                .addContainerGap())
        );

        jTabbedPane1.addTab("Geräte", jPanel2);

        jMenu1.setText("Datei");

        jMenuItem1.setText("Datenbestände laden");
        jMenuItem1.setEnabled(false);
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuItem2.setText("Datenbestände speichern");
        jMenuItem2.setEnabled(false);
        jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem2ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem2);
        jMenu1.add(jSeparator1);

        jMenuItem3.setText("Beenden");
        jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem3ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem3);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("Hilfe");

        jMenuItem4.setText("Hilfe anzeigen");
        jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem4ActionPerformed(evt);
            }
        });
        jMenu2.add(jMenuItem4);

        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTabbedPane1)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTabbedPane1)
                .addContainerGap())
        );

        pack();
        setLocationRelativeTo(null);
    }// </editor-fold>//GEN-END:initComponents

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed

        // Button: Speichern (Geräte)
        
        // Eingaben evaluieren
        int IDWert = -9999;

        // Eingaben evaluieren: Die ID muss numerisch sein.
        try
        {
            IDWert = Integer.parseInt(jTextField2.getText());

        } catch (NumberFormatException e) {
            jTextArea1.setText("Die ID wurde geändert.\n" +
                    "Das editierte Geraet hat die ID " + getGeladeneGeraeteID() + ".\n" +
                    "Bitte die ID " + getGeladeneGeraeteID() + " setzen oder das gewünschte Geraet über 'Bearbeiten' erneut laden.");
            return;
        }

        // Eingaben evaluieren: Die ID darf während der Bearbeitung des Geraetes nicht verändert werden.
        if ( IDWert != getGeladeneGeraeteID() )
        {
            jTextArea1.setText("Die ID wurde geändert.\n" +
                    "Das editierte Geraet hat die ID " + getGeladeneGeraeteID() + ".\n" +
                    "Bitte die ID " + getGeladeneGeraeteID() + " setzen oder das gewünschte Geraet über 'Bearbeiten' erneut laden.");
            return;
        }

        // Geraetedaten speichern
        geraetemanager.getGeraet(IDWert).setBezeichnung(jTextField3.getText());
        geraetemanager.getGeraet(IDWert).setStandort(jTextField4.getText());
        geraetemanager.getGeraet(IDWert).setIstLeihgeraet(jComboBox1.getSelectedItem().toString());
        if (!jTextField5.getText().equals(""))  geraetemanager.getGeraet(IDWert).setEntleiher(jTextField5.getText());
        else                                    geraetemanager.getGeraet(IDWert).setEntleiher(" ");
        if (!jTextField6.getText().equals(""))  geraetemanager.getGeraet(IDWert).setEntleihdatum(jTextField6.getText());
        else                                    geraetemanager.getGeraet(IDWert).setEntleihdatum(" ");

        jTextArea1.setText("Der Aritkel mit der ID " + IDWert + " wurde erfolgreich gespeichert.");
        
    }//GEN-LAST:event_jButton2ActionPerformed

    private void jRadioButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton5ActionPerformed

        // RadioButton: Leihgeräte
        
        // Parameter zeigeAlleGeraete
        geraeteAnzeigen(false);
    }//GEN-LAST:event_jRadioButton5ActionPerformed

    private void jRadioButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioButton3ActionPerformed

        // RadioButton: Alle Geräte
        
        // Parameter zeigeAlleGeraete
        geraeteAnzeigen(true);
    }//GEN-LAST:event_jRadioButton3ActionPerformed

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed

        // Button: Neu (Geräte)

        geraetemanager.erstelleGeraet();

        int IDWert = geraetemanager.getGeraeteanzahl();
        
        setGeladeneGeraeteID(IDWert);

        jTextField2.setText(String.valueOf(IDWert));
        jTextField3.setText("");
        jTextField4.setText("");
        jComboBox1.setSelectedIndex(1);
        jTextField5.setText("");
        jTextField6.setText("");

        // Geraete speichern
        jButton2.doClick();
        
        jTextArea1.setText("Das Geraet mit der ID " + IDWert + " wurde angelegt.");

    }//GEN-LAST:event_jButton1ActionPerformed

    private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField2ActionPerformed
        // TODO add your handling code here:
        
    }//GEN-LAST:event_jTextField2ActionPerformed

    private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed

        // Button: Anmelden
        
        //AUTOLOGIN
        //String loginRolle = benutzermanager.checkLogin("admin", "admin");
        String loginRolle = benutzermanager.checkLogin(jTextField1.getText(), new String(jPasswordField1.getPassword()));
        
        switch (loginRolle)
        {
            case "falsch":
                jTextArea2.setText("Benutzer oder Kennwort falsch.");
                break;
            case "Admin":
                // Elemente auf jPanel3 aktivieren (Geräte)
                for (int i=0; i < jPanel3.getComponentCount(); i++)
                {
                    jPanel3.getComponent(i).setEnabled(true);
                }
                
                // Elemente auf jPanel4 aktivieren (Geraetedaten)
                for (int i=0; i < jPanel4.getComponentCount(); i++)
                {
                    jPanel4.getComponent(i).setEnabled(true);
                }

                // Elemente auf jPanel5 aktivieren (Benutzerdaten)
                for (int i=0; i < jPanel5.getComponentCount(); i++)
                {
                    jPanel5.getComponent(i).setEnabled(true);
                }

                // Elemente auf jPanel6 aktivieren (Benutzerdaten)
                for (int i=0; i < jPanel6.getComponentCount(); i++)
                {
                    jPanel6.getComponent(i).setEnabled(true);
                }
                
                // Elemente auf jMenu1 aktivieren (Menü Datei)
                jMenuItem1.setEnabled(true);
                jMenuItem2.setEnabled(true);
                        
                // Buttons in buttonGroupGeraete aktivieren (Informationen zu Geraeten)
                Enumeration<AbstractButton> e = buttonGroupGeraete.getElements();

                while (e.hasMoreElements()) 
                {
                    e.nextElement().setEnabled(true);
                }
                break;
            case "Benutzer":
                // Elemente auf jPanel3 deaktivieren (Geräte)
                for (int i=0; i < jPanel3.getComponentCount(); i++)
                {
                    jPanel3.getComponent(i).setEnabled(false);
                }
                
                // Elemente auf jPanel4 deaktivieren (Geraetedaten)
                for (int i=0; i < jPanel4.getComponentCount(); i++)
                {
                    jPanel4.getComponent(i).setEnabled(false);
                }

                // Elemente auf jPanel5 deaktivieren (Benutzerdaten)
                for (int i=0; i < jPanel5.getComponentCount(); i++)
                {
                    jPanel5.getComponent(i).setEnabled(false);
                }

                // Elemente auf jPanel6 deaktivieren (Benutzerdaten)
                for (int i=0; i < jPanel6.getComponentCount(); i++)
                {
                    jPanel6.getComponent(i).setEnabled(false);
                }
                
                // Elemente auf jMenu1 deaktivieren (Menü Datei)
                jMenuItem1.setEnabled(false);
                jMenuItem2.setEnabled(false);
                
                // Anmeldung aktivieren
                jTextField1.setEnabled(true);
                jPasswordField1.setEnabled(true);
                jButton6.setEnabled(true);
                jButton5.setEnabled(true);
                
                // Leihgeräte aktivieren
                jRadioButton5.setEnabled(true);
                break;
            default:
                ;;
        }

    }//GEN-LAST:event_jButton5ActionPerformed

    private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
        
        // Menüpunkt: Beenden
        
        System.exit(0);
    }//GEN-LAST:event_jMenuItem3ActionPerformed

    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField1ActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTextField1ActionPerformed

    private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed

        // Menüpunkt: Hilfe
        
        jTextArea1.setText(getAnleitung("Geraete"));
        jTextArea2.setText(getAnleitung("Benutzer"));

    }//GEN-LAST:event_jMenuItem4ActionPerformed

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed

        // Menüpunkt: Datenbestände laden
        
        geraetemanager.ladeGeraetebestand();
        benutzermanager.ladeBenutzerbestand();
    }//GEN-LAST:event_jMenuItem1ActionPerformed

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
        
        // Menüpunkt: Datenbestände speichern
        
        geraetemanager.speichereGeraetebestand();
        benutzermanager.speichereBenutzerbestand();
    }//GEN-LAST:event_jMenuItem2ActionPerformed

    private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed

        // Button: Benutzer anzeigen
        
        StringBuffer out = new StringBuffer();
        
        jTextArea2.setText("");
        
        // Überschriften der Spalten
        out.append("ID");

        for (int j=out.length(); j < idBreite; j++) out.append(" ");
        out.append("|Vorname");

        for (int j=out.length(); j < spaltenbreite * 1 + idBreite; j++) out.append(" ");
        out.append("|Nachname");

        for (int j=out.length(); j < spaltenbreite * 2 + idBreite; j++) out.append(" ");
        out.append("|Geburtsdatum");

        for (int j=out.length(); j < spaltenbreite * 3 + idBreite; j++) out.append(" ");
        out.append("|Benutzername");

        for (int j=out.length(); j < spaltenbreite * 4 + idBreite; j++) out.append(" ");
        out.append("|Rolle");

        jTextArea2.append(out.toString() + "\n");
        
        // Überschriften unterstreichen
        for (int j=0; j < spaltenbreite * 5 + idBreite; j++) jTextArea2.append("=");
        jTextArea2.append("\n");
        
        // Datensätze ausgeben
        for (int i=1; i <= benutzermanager.getBenutzeranzahl(); i++)
        {
            out = new StringBuffer();
            
            out.append(String.valueOf(i));
            
            for (int j=out.length(); j < idBreite; j++) out.append(" ");
            out.append("|" + benutzermanager.getBenutzer(i).getVorname());

            for (int j=out.length(); j < spaltenbreite * 1 + idBreite; j++) out.append(" ");
            out.append("|" + benutzermanager.getBenutzer(i).getNachname());

            for (int j=out.length(); j < spaltenbreite * 2 + idBreite; j++) out.append(" ");
            out.append("|" + benutzermanager.getBenutzer(i).getGebDatum());

            for (int j=out.length(); j < spaltenbreite * 3 + idBreite; j++) out.append(" ");
            out.append("|" + benutzermanager.getBenutzer(i).getBenutzername());

            for (int j=out.length(); j < spaltenbreite * 4 + idBreite; j++) out.append(" ");
            out.append("|" + benutzermanager.getBenutzer(i).getRolle());
  
            jTextArea2.append(out.toString() + "\n");
        }

        
    }//GEN-LAST:event_jButton6ActionPerformed

    private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton9ActionPerformed

        // Button: Bearbeiten (Benutzer)
        
        // Eingaben evaluieren
        int IDWert = -9999;
        
        // Eingaben evaluieren: Die ID muss numerisch sein.
        try
        {
            IDWert = Integer.parseInt(jTextField7.getText());
        } catch (NumberFormatException e) {
            jTextArea2.setText("Die Benutzer ID " + IDWert + " ist ungültig.\n" +
                    "Bitte eine ID > 0 und <= " + benutzermanager.getBenutzeranzahl() + " wählen.");
            return;
        }
        
        // Eingaben evaluieren: Die Benutzer ID muss existieren.
        if ( IDWert < 1 || IDWert > benutzermanager.getBenutzeranzahl() )
        {
            jTextArea2.setText("Die Benutzer ID " + IDWert + " ist ungültig.\n" +
                    "Bitte eine ID > 0 und <= " + benutzermanager.getBenutzeranzahl() + " wählen.");
            return;
        }

        // Benutzerdaten laden
        jTextField8.setText(benutzermanager.getBenutzer(IDWert).getVorname());
        jTextField9.setText(benutzermanager.getBenutzer(IDWert).getNachname());
        jTextField10.setText(benutzermanager.getBenutzer(IDWert).getGebDatum());
        jTextField12.setText(benutzermanager.getBenutzer(IDWert).getBenutzername());
        jTextField11.setText(benutzermanager.getBenutzer(IDWert).getKennwort());
        jComboBox2.setSelectedItem(benutzermanager.getBenutzer(IDWert).getRolle());
        
        setGeladeneBenutzerID(IDWert);
    }//GEN-LAST:event_jButton9ActionPerformed

    private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton10ActionPerformed

        // Button: Speichern (Benutzer)
        
        // Eingaben evaluieren
        int IDWert = -9999;

        // Eingaben evaluieren: Die ID muss numerisch sein.
        try
        {
            IDWert = Integer.parseInt(jTextField7.getText());

        } catch (NumberFormatException e) {
            jTextArea2.setText("Die ID wurde geändert.\n" +
                    "Der editierte Benutzer hat die ID " + getGeladeneBenutzerID() + ".\n" +
                    "Bitte die ID " + getGeladeneBenutzerID() + " setzen oder den gewünschten Benutzer über 'Bearbeiten' erneut laden.");
            return;
        }

        // Eingaben evaluieren: Die ID darf während der Bearbeitung des Benutzers nicht verändert werden.
        if ( IDWert != getGeladeneBenutzerID() )
        {
            jTextArea2.setText("Die ID wurde geändert.\n" +
                    "Der editierte Benutzer hat die ID " + getGeladeneBenutzerID() + ".\n" +
                    "Bitte die ID " + getGeladeneBenutzerID() + " setzen oder den gewünschten Benutzer über 'Bearbeiten' erneut laden.");
            return;
        }

        // Benutzerdaten speichern
        benutzermanager.getBenutzer(IDWert).setVorname(jTextField8.getText());
        benutzermanager.getBenutzer(IDWert).setNachname(jTextField9.getText());
        benutzermanager.getBenutzer(IDWert).setGebDatum(jTextField10.getText());
        benutzermanager.getBenutzer(IDWert).setBenutzername(jTextField12.getText());
        benutzermanager.getBenutzer(IDWert).setKennwort(jTextField11.getText());
        benutzermanager.getBenutzer(IDWert).setRolle(jComboBox2.getSelectedItem().toString());
        
        jTextArea2.setText("Der Benutzer mit der ID " + IDWert + " wurde erfolgreich gespeichert.");
    }//GEN-LAST:event_jButton10ActionPerformed

    private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed
        
        // Button: Neu (Benutzer)

        benutzermanager.erstelleBenutzer();

        int IDWert = benutzermanager.getBenutzeranzahl();
        
        setGeladeneBenutzerID(IDWert);
        
        jTextField7.setText(String.valueOf(IDWert));
        jTextField8.setText("");
        jTextField9.setText("");
        jTextField10.setText("");
        jTextField12.setText("");
        jTextField11.setText("");
        jComboBox2.setSelectedIndex(0);
        
        // Benutzer speichern
        jButton10.doClick();
        
        jTextArea2.setText("Der Benutzer mit der ID " + IDWert + " wurde angelegt.");
        
    }//GEN-LAST:event_jButton7ActionPerformed

    private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton8ActionPerformed

        // Button: Entfernen (Benutzer)
        
        // Eingaben evaluieren
        int IDWert = -9999;

        // Eingaben evaluieren: Die ID muss numerisch sein.
        try
        {
            IDWert = Integer.parseInt(jTextField7.getText());

        } catch (NumberFormatException e) {
            jTextArea2.setText("Die ID " + IDWert + " ist ungültig.\n" +
                    "Bitte einen Benutzer laden, um ihn zu löschen.");
            return;
        }

        // Eingaben evaluieren: Die Benutzer ID muss existieren.
        if ( IDWert < 1 || IDWert > benutzermanager.getBenutzeranzahl() )
        {
            jTextArea2.setText("Die Benutzer ID " + IDWert + " ist ungültig.\n" +
                    "Bitte eine ID > 0 und <= " + benutzermanager.getBenutzeranzahl() + " wählen.");
            return;
        }

        // Eingaben evaluieren: Der Benutzer muss sich in Bearbeitung befinden, um gelöscht zu werden.
        if ( IDWert != getGeladeneBenutzerID() )
        {
            jTextArea2.setText("Die ID " + IDWert + " befindet sich nicht in Bearbeitung.\n" +
                    "Der zu löschende Benutzer muss editiert sein.\n" +
                    "Bitte zunächst den Benutzer laden.");
            return;
        }

        // Benutzer löschen
        benutzermanager.entferneBenutzer(benutzermanager.getBenutzer(IDWert));
        
        jTextArea2.setText("Der Benutzer mit der ID " + IDWert + " wurde erfolgreich gelöscht.");
        
        setGeladeneBenutzerID(-9999);

        jTextField7.setText("");
        jTextField8.setText("");
        jTextField9.setText("");
        jTextField10.setText("");
        jTextField12.setText("");
        jTextField11.setText("");
        jComboBox2.setSelectedIndex(-1);

    }//GEN-LAST:event_jButton8ActionPerformed

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed

        // Button: Bearbeiten (Geräte)

        // Eingaben evaluieren
        int IDWert = -9999;
        
        // Eingaben evaluieren: Die ID muss numerisch sein.
        try
        {
            IDWert = Integer.parseInt(jTextField2.getText());
        } catch (NumberFormatException e) {
            jTextArea1.setText("Die Geraete ID " + IDWert + " ist ungültig.\n" +
                    "Bitte eine ID > 0 und <= " + geraetemanager.getGeraeteanzahl() + " wählen.");
            return;
        }

        // Eingaben evaluieren: Die Geraete ID muss existieren.
        if ( IDWert < 1 || IDWert > geraetemanager.getGeraeteanzahl() )
        {
            jTextArea1.setText("Die Geraete ID " + IDWert + " ist ungültig.\n" +
                    "Bitte eine ID > 0 und <= " + geraetemanager.getGeraeteanzahl() + " wählen.");
            return;
        }

        // Geraetedaten laden
        jTextField3.setText(geraetemanager.getGeraet(IDWert).getBezeichnung());
        jTextField4.setText(geraetemanager.getGeraet(IDWert).getStandort());
        jComboBox1.setSelectedItem(geraetemanager.getGeraet(IDWert).getIstLeihgeraet());
        jTextField5.setText(geraetemanager.getGeraet(IDWert).getEntleiher());
        jTextField6.setText(geraetemanager.getGeraet(IDWert).getEntleihdatum());
        
        setGeladeneGeraeteID(IDWert);
        
    }//GEN-LAST:event_jButton4ActionPerformed

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed

        // Button: Entfernen (Geräte)
        
        // Eingaben evaluieren
        int IDWert = -9999;

        // Eingaben evaluieren: Die ID muss numerisch sein.
        try
        {
            IDWert = Integer.parseInt(jTextField2.getText());

        } catch (NumberFormatException e) {
            jTextArea1.setText("Die ID " + IDWert + " ist ungültig.\n" +
                    "Bitte ein Geraet laden, um es zu löschen.");
            return;
        }

        // Eingaben evaluieren: Die Geraete ID muss existieren.
        if ( IDWert < 1 || IDWert > geraetemanager.getGeraeteanzahl() )
        {
            jTextArea1.setText("Die Geraete ID " + IDWert + " ist ungültig.\n" +
                    "Bitte eine ID > 0 und <= " + geraetemanager.getGeraeteanzahl() + " wählen.");
            return;
        }

        // Eingaben evaluieren: Das Geraet muss sich in Bearbeitung befinden, um gelöscht zu werden.
        if ( IDWert != getGeladeneGeraeteID() )
        {
            jTextArea1.setText("Die ID " + IDWert + " befindet sich nicht in Bearbeitung.\n" +
                    "Das zu löschende Geraet muss editiert sein.\n" +
                    "Bitte zunächst das Geraet laden.");
            return;
        }

        // Geraet löschen
        geraetemanager.entferneGeraet(geraetemanager.getGeraet(IDWert));
        
        jTextArea1.setText("Das Geraet mit der ID " + IDWert + " wurde erfolgreich gelöscht.");
        
        setGeladeneGeraeteID(-9999);

        jTextField2.setText("");
        jTextField3.setText("");
        jTextField4.setText("");
        jComboBox1.setSelectedIndex(-1);
        jTextField5.setText("");
        jTextField6.setText("");
        
    }//GEN-LAST:event_jButton3ActionPerformed

    private void jButton5KeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jButton5KeyPressed
        
        // Button: Anmelden (KeyPressed)
        
        if (evt.getKeyCode() == VK_ENTER) jButton5.doClick();
    }//GEN-LAST:event_jButton5KeyPressed

    private void jButton6KeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jButton6KeyPressed
        
        // Button: Benutzer anzeigen (KeyPressed)
        if (evt.getKeyCode() == VK_ENTER) jButton6.doClick();
    }//GEN-LAST:event_jButton6KeyPressed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {

        UserInterface gui = new UserInterface();
        
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(UserInterface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(UserInterface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(UserInterface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(UserInterface.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        gui.initAll();
        
    } // Ende main

    /**
     * Die Methode 
     * legt die Manager-Objekte für Benutzer und Geraete an,
     * lädt die Datenbestände und
     * erstellt den Default-Admin, falls keine Benutzer angelegt sind.
     */
    private void initAll () 
    {
        geraetemanager = new GeraeteManager();
        benutzermanager = new BenutzerManager();

        // Datenbestaende einlesen
        geraetemanager.ladeGeraetebestand();
        benutzermanager.ladeBenutzerbestand();
        
        // Standard-Admin Admin anlegen, falls nicht vorhanden
        if (benutzermanager.getBenutzeranzahl() == 0)
        {
            benutzermanager.erstelleBenutzer();
            Benutzer b = benutzermanager.getBenutzer(1);
            b.setVorname("Default");
            b.setNachname("Admin");
            b.setGebDatum("30.12.2013");
            b.setBenutzername("admin");
            b.setKennwort("admin");
            b.setRolle("Admin");
            benutzermanager.speichereBenutzerbestand();
        }
        
        // Willkommenstext setzen
        jTextArea2.setText("\n\n\n\t===================================\n" +
                                 "\tWillkommen in der Geräteverwaltung!\n" +
                                 "\t===================================");
        
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {                
                setVisible(true);
            }
        });

        // AUTOLOGIN
        //jButton5.doClick();
    }

    /**
     * Lädt die Geraetedaten in die TextArea.
     * Der Parameter schaltet die Ausgabe 'Alle Geraete' oder 'Leihgeräte'.
     * @param zeigeAlleGeraete 
     */
    private void geraeteAnzeigen (boolean zeigeAlleGeraete) 
    {
        StringBuffer out = new StringBuffer();
        
        jTextArea1.setText("");

        // Überschriften der Spalten
        out.append("ID");
        
        for (int j=out.length(); j < idBreite; j++) out.append(" ");
        out.append("|Bezeichnung");

        for (int j=out.length(); j < spaltenbreite * 1 + idBreite; j++) out.append(" ");
        out.append("|Standort");

        for (int j=out.length(); j < spaltenbreite * 2 + idBreite; j++) out.append(" ");
        out.append("|Leihgeraet");

        for (int j=out.length(); j < spaltenbreite * 3 + idBreite; j++) out.append(" ");
        out.append("|Entleiher");

        for (int j=out.length(); j < spaltenbreite * 4 + idBreite; j++) out.append(" ");
        out.append("|Entleihdatum");

        jTextArea1.append(out.toString() + "\n");
        
        // Überschriften unterstreichen
        for (int j=0; j < spaltenbreite * 5 + idBreite; j++) jTextArea1.append("=");
        jTextArea1.append("\n");

        // Datensätze ausgeben
        for (int i=1; i <= geraetemanager.getGeraeteanzahl(); i++)
        {
            if (zeigeAlleGeraete == false && geraetemanager.getGeraet(i).getIstLeihgeraet().equals("Nein")) continue;
            
            out = new StringBuffer();
            
            out.append(String.valueOf(i));
            
            for (int j=out.length(); j < idBreite; j++) out.append(" ");
            out.append("|" + geraetemanager.getGeraet(i).getBezeichnung());

            for (int j=out.length(); j < spaltenbreite * 1 + idBreite; j++) out.append(" ");
            out.append("|" + geraetemanager.getGeraet(i).getStandort());
            
            for (int j=out.length(); j < spaltenbreite * 2 + idBreite; j++) out.append(" ");
            out.append("|" + geraetemanager.getGeraet(i).getIstLeihgeraet());
            
            for (int j=out.length(); j < spaltenbreite * 3 + idBreite; j++) out.append(" ");
            out.append("|" + geraetemanager.getGeraet(i).getEntleiher());

            for (int j=out.length(); j < spaltenbreite * 4 + idBreite; j++) out.append(" ");
            out.append("|" + geraetemanager.getGeraet(i).getEntleihdatum());

            jTextArea1.append(out.toString() + "\n");
        }
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.ButtonGroup buttonGroupGeraete;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton10;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JButton jButton6;
    private javax.swing.JButton jButton7;
    private javax.swing.JButton jButton8;
    private javax.swing.JButton jButton9;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JComboBox jComboBox2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JMenuItem jMenuItem3;
    private javax.swing.JMenuItem jMenuItem4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPasswordField jPasswordField1;
    private javax.swing.JRadioButton jRadioButton3;
    private javax.swing.JRadioButton jRadioButton5;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JPopupMenu.Separator jSeparator1;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextArea jTextArea2;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField10;
    private javax.swing.JTextField jTextField11;
    private javax.swing.JTextField jTextField12;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    private javax.swing.JTextField jTextField5;
    private javax.swing.JTextField jTextField6;
    private javax.swing.JTextField jTextField7;
    private javax.swing.JTextField jTextField8;
    private javax.swing.JTextField jTextField9;
    // End of variables declaration//GEN-END:variables
} // Ende Klasse UserInterface
